↳ Prolog
↳ PrologToPiTRSProof
p_in_ga(X, X) → p_out_ga(X, X)
p_in_ga(f(X), g(Y)) → U1_ga(X, Y, p_in_ga(f(X), f(Z)))
U1_ga(X, Y, p_out_ga(f(X), f(Z))) → U2_ga(X, Y, Z, p_in_gg(Z, g(Y)))
p_in_gg(X, X) → p_out_gg(X, X)
p_in_gg(f(X), g(Y)) → U1_gg(X, Y, p_in_ga(f(X), f(Z)))
U1_gg(X, Y, p_out_ga(f(X), f(Z))) → U2_gg(X, Y, Z, p_in_gg(Z, g(Y)))
U2_gg(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_gg(f(X), g(Y))
U2_ga(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_ga(f(X), g(Y))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
p_in_ga(X, X) → p_out_ga(X, X)
p_in_ga(f(X), g(Y)) → U1_ga(X, Y, p_in_ga(f(X), f(Z)))
U1_ga(X, Y, p_out_ga(f(X), f(Z))) → U2_ga(X, Y, Z, p_in_gg(Z, g(Y)))
p_in_gg(X, X) → p_out_gg(X, X)
p_in_gg(f(X), g(Y)) → U1_gg(X, Y, p_in_ga(f(X), f(Z)))
U1_gg(X, Y, p_out_ga(f(X), f(Z))) → U2_gg(X, Y, Z, p_in_gg(Z, g(Y)))
U2_gg(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_gg(f(X), g(Y))
U2_ga(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_ga(f(X), g(Y))
P_IN_GA(f(X), g(Y)) → U1_GA(X, Y, p_in_ga(f(X), f(Z)))
P_IN_GA(f(X), g(Y)) → P_IN_GA(f(X), f(Z))
U1_GA(X, Y, p_out_ga(f(X), f(Z))) → U2_GA(X, Y, Z, p_in_gg(Z, g(Y)))
U1_GA(X, Y, p_out_ga(f(X), f(Z))) → P_IN_GG(Z, g(Y))
P_IN_GG(f(X), g(Y)) → U1_GG(X, Y, p_in_ga(f(X), f(Z)))
P_IN_GG(f(X), g(Y)) → P_IN_GA(f(X), f(Z))
U1_GG(X, Y, p_out_ga(f(X), f(Z))) → U2_GG(X, Y, Z, p_in_gg(Z, g(Y)))
U1_GG(X, Y, p_out_ga(f(X), f(Z))) → P_IN_GG(Z, g(Y))
p_in_ga(X, X) → p_out_ga(X, X)
p_in_ga(f(X), g(Y)) → U1_ga(X, Y, p_in_ga(f(X), f(Z)))
U1_ga(X, Y, p_out_ga(f(X), f(Z))) → U2_ga(X, Y, Z, p_in_gg(Z, g(Y)))
p_in_gg(X, X) → p_out_gg(X, X)
p_in_gg(f(X), g(Y)) → U1_gg(X, Y, p_in_ga(f(X), f(Z)))
U1_gg(X, Y, p_out_ga(f(X), f(Z))) → U2_gg(X, Y, Z, p_in_gg(Z, g(Y)))
U2_gg(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_gg(f(X), g(Y))
U2_ga(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_ga(f(X), g(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
P_IN_GA(f(X), g(Y)) → U1_GA(X, Y, p_in_ga(f(X), f(Z)))
P_IN_GA(f(X), g(Y)) → P_IN_GA(f(X), f(Z))
U1_GA(X, Y, p_out_ga(f(X), f(Z))) → U2_GA(X, Y, Z, p_in_gg(Z, g(Y)))
U1_GA(X, Y, p_out_ga(f(X), f(Z))) → P_IN_GG(Z, g(Y))
P_IN_GG(f(X), g(Y)) → U1_GG(X, Y, p_in_ga(f(X), f(Z)))
P_IN_GG(f(X), g(Y)) → P_IN_GA(f(X), f(Z))
U1_GG(X, Y, p_out_ga(f(X), f(Z))) → U2_GG(X, Y, Z, p_in_gg(Z, g(Y)))
U1_GG(X, Y, p_out_ga(f(X), f(Z))) → P_IN_GG(Z, g(Y))
p_in_ga(X, X) → p_out_ga(X, X)
p_in_ga(f(X), g(Y)) → U1_ga(X, Y, p_in_ga(f(X), f(Z)))
U1_ga(X, Y, p_out_ga(f(X), f(Z))) → U2_ga(X, Y, Z, p_in_gg(Z, g(Y)))
p_in_gg(X, X) → p_out_gg(X, X)
p_in_gg(f(X), g(Y)) → U1_gg(X, Y, p_in_ga(f(X), f(Z)))
U1_gg(X, Y, p_out_ga(f(X), f(Z))) → U2_gg(X, Y, Z, p_in_gg(Z, g(Y)))
U2_gg(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_gg(f(X), g(Y))
U2_ga(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_ga(f(X), g(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
P_IN_GG(f(X), g(Y)) → U1_GG(X, Y, p_in_ga(f(X), f(Z)))
U1_GG(X, Y, p_out_ga(f(X), f(Z))) → P_IN_GG(Z, g(Y))
p_in_ga(X, X) → p_out_ga(X, X)
p_in_ga(f(X), g(Y)) → U1_ga(X, Y, p_in_ga(f(X), f(Z)))
U1_ga(X, Y, p_out_ga(f(X), f(Z))) → U2_ga(X, Y, Z, p_in_gg(Z, g(Y)))
p_in_gg(X, X) → p_out_gg(X, X)
p_in_gg(f(X), g(Y)) → U1_gg(X, Y, p_in_ga(f(X), f(Z)))
U1_gg(X, Y, p_out_ga(f(X), f(Z))) → U2_gg(X, Y, Z, p_in_gg(Z, g(Y)))
U2_gg(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_gg(f(X), g(Y))
U2_ga(X, Y, Z, p_out_gg(Z, g(Y))) → p_out_ga(f(X), g(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
P_IN_GG(f(X), g(Y)) → U1_GG(X, Y, p_in_ga(f(X), f(Z)))
U1_GG(X, Y, p_out_ga(f(X), f(Z))) → P_IN_GG(Z, g(Y))
p_in_ga(X, X) → p_out_ga(X, X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
U1_GG(p_out_ga(f(Z))) → P_IN_GG(Z, g)
P_IN_GG(f(X), g) → U1_GG(p_in_ga(f(X)))
p_in_ga(X) → p_out_ga(X)
p_in_ga(x0)
U1_GG(p_out_ga(f(Z))) → P_IN_GG(Z, g)
P_IN_GG(f(X), g) → U1_GG(p_in_ga(f(X)))
p_in_ga(X) → p_out_ga(X)
POL(P_IN_GG(x1, x2)) = 2·x1 + 2·x2
POL(U1_GG(x1)) = 1 + x1
POL(f(x1)) = 2 + x1
POL(g) = 2
POL(p_in_ga(x1)) = 2 + 2·x1
POL(p_out_ga(x1)) = 2·x1
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ PisEmptyProof
p_in_ga(x0)